我正在尝试实现丢失和找到的数据库。 我有两个模型, User和Item 。 用户可以丢失项目并找到项目。 并且项目可以包含找到它的用户和丢失它的用户。 我希望能够通过不同的名称引用相同的模型,例如
user.found_items, user.lost_items, item.founder, item.losser现在我能做到:
user.founds , user.losts和user.items将返回user.items的items
class User < ActiveRecord::Base has_many :founds has_many :items, through: :founds has_many :losts has_many :items, through: :losts end class Lost < ActiveRecord::Base belongs_to :user belongs_to :item end class Found < ActiveRecord::Base belongs_to :user belongs_to :item end class Item < ActiveRecord::Base has_one :found has_one :user, through: :found has_one :lost has_one :user, through: :lost endI am trying to implement a lost and found database. I have two model, User and Item. A user can lost an an item and found an item. And a item can have a the user who found it and the user who lost it. I want to be able to reference the the same model through different name, e.g.
user.found_items, user.lost_items, item.founder, item.losserright now I am able to do:
user.founds, user.losts and user.items will return the items from losts
class User < ActiveRecord::Base has_many :founds has_many :items, through: :founds has_many :losts has_many :items, through: :losts end class Lost < ActiveRecord::Base belongs_to :user belongs_to :item end class Found < ActiveRecord::Base belongs_to :user belongs_to :item end class Item < ActiveRecord::Base has_one :found has_one :user, through: :found has_one :lost has_one :user, through: :lost end最满意答案
我会做一些非常相似的事情,只是为了清晰起见重命名,并为你想要的功能添加一些方法。
class User < ActiveRecord::Base has_many :found_items has_many :items, through: :found_item has_many :lost_items has_many :items, through: :lost_item def items_found self.found_items.map {|i| i.item.name } end def items_lost self.lost_items.map {|i| i.item.name } end end class LostItem < ActiveRecord::Base belongs_to :user belongs_to :item end class FoundItem < ActiveRecord::Base belongs_to :user belongs_to :item end class Item < ActiveRecord::Base has_one :found_item has_one :user, through: :found_item has_one :lost_item has_one :user, through: :lost_item def finder self.found_item.user.name end def loser self.lost_item.user.name end endI would do something pretty similar just rename them for clarity and add some methods for the functions you wanted.
class User < ActiveRecord::Base has_many :found_items has_many :items, through: :found_item has_many :lost_items has_many :items, through: :lost_item def items_found self.found_items.map {|i| i.item.name } end def items_lost self.lost_items.map {|i| i.item.name } end end class LostItem < ActiveRecord::Base belongs_to :user belongs_to :item end class FoundItem < ActiveRecord::Base belongs_to :user belongs_to :item end class Item < ActiveRecord::Base has_one :found_item has_one :user, through: :found_item has_one :lost_item has_one :user, through: :lost_item def finder self.found_item.user.name end def loser self.lost_item.user.name end end更多推荐
user,Item,User,item,电脑培训,计算机培训,IT培训"/> <meta name="descripti
发布评论