我有以下内容:
带列的 User
模型:
id user_id password created_at updated_at
带列的 Store
模型:
id store_id store_name create_ad updated_at
基本上用户可以属于多个商店。所以我希望得到一个类似“获取用户所有商店”的查询
我所做的关系是:
class User < ActiveRecord::Base
belongs_to :store, :foreign_key => "store_id"
end
class Store < ActiveRecord::Base
has_many :user, :foreign_key => "store_id"
end
这些是正确的吗?
最终我想知道userid,password和storeid是否应该能够登录。
那么如何在此使用find_byXXX
?所以,如果我通过传入userid,password和storeId获得一行...我会知道用户是否应该能够登录?
我注意到之前已经提出过belongs_to和has_many问题,但我无法从这些问题中理解。也许特定于我的问题的答案将有所帮助...
答案 0 :(得分:0)
所以你说过一个用户属于很多商店。有多少用户属于一个商店?
如果答案大于1,那么您需要的是has_and_belongs_to_many
和第三个数据库表。该表基本上包含一对(store_id
,user_id
)。
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
虽然Rails不需要它,但建议您为此关系创建一个模型,并在该模型上建立双向关系。你以后会感谢自己。
class User < ActiveRecord::Base
has_many :userstores
has_many :stores, :through => :userstores
end
class Store < ActiveRecord::Base
has_many :userstores
has_many :users, :through => :userstores
end
class UserStore < ActiveRecord::Base
belongs_to :user
belongs_to :store
end
答案 1 :(得分:0)
您正在寻找has_and_belongs_to_many关系。您的表格和模型应如下所示:
用户表:
id password created_at updated_at
商店表:
id store_name created_at updated_at
加入表(称为stores_users):
store_id user_id
在你的模特中:
class User < ActiveRecord::Base
has_and_belongs_to_many :stores
end
class Store < ActiveRecord::Base
has_and_belongs_to_many :users
end
获取用户的商店:
User.stores
有关详细信息,请参阅the rails API。
答案 2 :(得分:0)
您似乎对ActiveRecords在基本级别的工作方式做了很多错误的假设,因此我建议您阅读官方且非常直截了当的ActiveRecord Associations guide。