我有一个关于 Rails 及其关系查询构建器的问题,特别是如何为相关调用转换骆驼大小写。
相关代码
class CustomerPlan < ActiveRecord::Base
attr_accessible :customer_id, :plan_id, :startDate, :user_id
has_many :planActions
end
class PlanAction < ActiveRecord::Base
attr_accessible :actionType_id, :customerPlan_id, :notes, :timeSpent
belongs_to :customerPlan
belongs_to :actionType
end
getter 和 setter 工作得很好,例如plan_action.actionType.name
可以正确地从相关模型中提取。但是customer_plan.planActions.each
返回错误:
SQLite3::SQLException: no such column: plan_actions.customer_plan_id:
SELECT "plan_actions".*
FROM "plan_actions"
WHERE "plan_actions"."customer_plan_id" = 1
该列在数据库中定义为customerPlan_id
,我使用它是不是错了?它适用于所有其他电话,我所有其他关系都很好。甚至 PlanAction -> CustomerPlan。
我浏览了所有文档,并搜索了我知道的所有其他来源。更改我的列很简单,我只想知道这里发生了什么。
感谢您的时间!
对此的快速解决方法是显式设置foreign_key。
has_many :planActions, :foreign_key => "customerPlan_id", :class_name => "PlanAction"
不过,我认为我在某处遗漏了一些模型命名约定,只是似乎无法弄清楚是什么。