Rails 4创建新标签

时间:2013-11-16 16:30:39

标签: ruby-on-rails

我有一些关于如何向用户帐户添加标记的问题:

以下是与标签

相关的用户模型
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”的标记。我尝试了一些创建方法,并得到了预期的对象错误。

如果有人可以帮助解释如何使用这些模型,我将不胜感激。

2 个答案:

答案 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')