Class: Girb::Tools::RailsModelInfo
- Inherits:
-
Base
- Object
- Base
- Girb::Tools::RailsModelInfo
show all
- Defined in:
- lib/girb/tools/rails_tools.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
to_gemini_tool, tool_name
Class Method Details
.available? ⇒ Boolean
67
68
69
|
# File 'lib/girb/tools/rails_tools.rb', line 67
def available?
defined?(ActiveRecord::Base)
end
|
.description ⇒ Object
71
72
73
|
# File 'lib/girb/tools/rails_tools.rb', line 71
def description
"Get Rails ActiveRecord model information including associations, validations, callbacks, and scopes."
end
|
.parameters ⇒ Object
75
76
77
78
79
80
81
82
83
84
85
86
|
# File 'lib/girb/tools/rails_tools.rb', line 75
def parameters
{
type: "object",
properties: {
model_name: {
type: "string",
description: "The model class name (e.g., 'User', 'Order', 'Product')"
}
},
required: ["model_name"]
}
end
|
Instance Method Details
#execute(binding, model_name:) ⇒ Object
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/girb/tools/rails_tools.rb', line 89
def execute(binding, model_name:)
klass = binding.eval(model_name)
unless klass < ActiveRecord::Base
return { error: "#{model_name} is not an ActiveRecord model" }
end
{
model: model_name,
table_name: klass.table_name,
primary_key: klass.primary_key,
columns: get_columns(klass),
associations: get_associations(klass),
validations: get_validations(klass),
callbacks: get_callbacks(klass),
scopes: get_scopes(klass)
}
rescue NameError => e
{ error: "Model not found: #{e.message}" }
rescue StandardError => e
{ error: "#{e.class}: #{e.message}" }
end
|