我有User
和Item
模型。用户可能like
,want
或own
物品。我如何在 Rails 中创建这种关系?这三个动作将来可能会增加,所以我想让它变得灵活。
对不起我的英语不好
更新
我创建了名为UserAction
andUserActionType
在user.rb我添加
has_many :user_actions
has_many :actions, :through => :user_actions, :source => :user_action
def method_missing(method_id, *arguments)
if match = /([_a-zA-Z]\w*)_it/.match(method_id.to_s)
action_name = match[1]
action_type = UserActionType.find_by_name(action_name)
action = action_type.user_actions.new
action.user = self
action.item = arguments[0]
action_type.save
action.save
elsif match = /find_my_([_a-zA-Z]\w*)s/.match(method_id.to_s)
action_name = match[1]
user_actions.joins('LEFT JOIN user_action_types ON user_action_types.id = user_actions.user_action_type_id').where('user_action_types.name = "'+ action_name +'"')
else
super
end
end
这样,我就有了own_it
, want_it
, like_it
andfind_my_likes
等方法find_my_*
。
你觉得我的解决方案怎么样?