Railsで記事とタグのモデルを、関連テーブルを作成して結びつけました。下記の3つのモデルが作成されています。これらのモデルはhas_manyとthroughを使用しています。
Post
- title
Tag
- name(ユニーク制約)
PostTag
- post_id
- tag_id
今回やりたいことは、記事にタグを付ける時に、そのタグが既に存在しているならPostTagテーブルにのみレコードを追加するということです。post.tags.create!(name: "天気")
だとうまくいきません。このような一文で行えるようなメソッドはrailsには存在しないのでしょうか?
下記のようにif文で2通りの処理を書く必要はありますでしょうか?
ご回答、よろしくお願い致します。
#db/seeds.rb Post.create(title: "岡山県はいい天気でした") Post.find(1).tags.create(name: "天気") Post.find(1).tags.create(name: "日記") Post.find(1).tags.create(name: "岡山県") p = Post.create(title: "明日の天気を見分ける方法") # 次だとtag.nameがユニークに設定しているため、何も起きない #p.tags.create!(name: "天気") # うまくいく例 tag_name = "天気" tag = Tag.find_by(name: tag_name) if tag p.post_tags.create(tag_id: tag.id) else p.tags.create(name: tag_name) end ```、
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/07 00:52 編集