我有一个名为Business的模型对象,这个对象有很多BusinessPlace,而营业场所有很多BusinessPlacePhone。对于数据库中的BusinessPlacePhone,创建了一个名为BusinessPlace_id的列,但是当我尝试使用BusinessPlace.BusinessPlacePhones属性获取业务场所的所有电话时,选择查询看起来像这样
SELECT "business_place_phones".* FROM "business_place_phones" WHERE "business_place_phones"."business_place_id" = 1
但是查询应该在BusinessPlace_id列中搜索,因为这个列存在。 我得到了
SQLException: no such column: business_place_phones.business_place_id:
问题是什么,为什么rails以一种方式在数据库中构建表并以另一种方式搜索查询?
我尝试手动重命名列并适用于查询,但不尊重模型属性。
有什么方法可以解决这个问题,或者我只需要用一个名称重命名模型,这样BusinessPlace就会成为Place和BusinessPlacePhone成为Phone?
答案 0 :(得分:0)
Rails在这种情况下使用下划线。
你绝对不应该使用CamelCase和下划线组合来命名任何东西。
实际上,除非是类名,否则请忘记CamelCase并坚持使用下划线,不要将字段命名为BusinessPlace_id
或BusinessPlaceId
或类似名称,而是使用business_place_id
。< / p>
有关更多命名约定,请阅读此链接here
然后你的问题就会消失。希望这会有所帮助。