0

次のようにhabtmを管理できますが、これを改善する方法が必要でした

Rails 3のユーザーとタグの間にhabtmがあります.aa 0.5.1タグ名はuniqです

  f.input :tags, :label => 'Assign existing tag'                             
  # this above allows to select from existing tags, but cannot allow to create one

  f.has_many :tags, :label => 'Add new tags, modify existings' do |ff|
    ff.input :name
    ff.input :_destroy, :as => :boolean
  end
  # this above allows to create new one but not allow to specify existing one
  # if we specify existing one, uniqueness wont let create this one, neither existing get used
  # and throws validation error

ヒントはありますか?

モデルの追加

class User < ActiveRecord::Base
  has_and_belongs_to_many :tags
  scope :tagged_with, lambda {|tags| joins(:tags).where("tags.name" => tags)}
  accepts_nested_attributes_for :tags, :allow_destroy => true
end

class Tag < ActiveRecord::Base
  has_and_belongs_to_many :users
  validates :name, :uniqueness => { :case_sensitive => false }
end
4

1 に答える 1

0

これを試して、

f.label => 'Assign existing tag'
f.select :tags, Tag.all.map{|t| [t.tag_name, t.id]}, {:prompt => "Select Tag name" }

上記では、既存のタグから選択できますが、作成するオプションはありません

次に、モデルに次の行を追加します。

validates :tags, :uniqueness => {:scope => :tag_name}

ここで、:tag_name はフィールド名の名前です。複製を作成するときにタグ名がすでに存在する場合、これはエラーをスローします。

ご質問のとおりのアイデアです。正確な答えを得るには仕様が十分でないため、これは正確な答えにはなりません。

于 2013-03-25T11:38:43.140 に答える