我有一些关于如何向用户帐户添加标记的问题:
以下是与标签
相关的用户模型has_many :tags, through: :taggings
这是标签模型:
class Tag < ActiveRecord::Base
attr_accessor :unread_count, :user_feeds
has_many :taggings
has_many :feeds, through: :taggings
end
标记模型:
class Tagging < ActiveRecord::Base
belongs_to :tag
belongs_to :feed
belongs_to :user
end
我正处于脚本中我拥有当前用户对象@user
的位置,如果不存在,我需要创建名为“Mailbox”的标记。我尝试了一些创建方法,并得到了预期的对象错误。
如果有人可以帮助解释如何使用这些模型,我将不胜感激。
答案 0 :(得分:3)
这样做的合法方法是
@user.tags.create(name: "Mailbox")
如果你想先检查它是否存在,那么rails 4的方法是:
@user.tags.find_or_create_by(name: "Mailbox")
如果您有任何疑问,请评论。
答案 1 :(得分:0)
您只需使用<<
关联自动添加的has_many
方法:
@user.tags << Tag.find_or_create_by(name:'Mailbox')
或者,轨道3:
@user.tags << Tag.where(name:'Mailbox').first_or_create!(name:'Mailbox')
# Or, as the << method automatically saves new objects
@user.tags << Tag.where(name:'Mailbox').first_or_initialize(name:'Mailbox')