前提
Rails学習中のものです。
掲示板を作成している最中です。
posts_controllerをscaffoldで生成しました。
その後、モデルの構築の部分で止まっています。
データベース(モデル)の扱いがよく理解できておらず、質問させていただきます。
環境
Mac
Ruby 2.5
Rails 5.2
実装コード
以下はそれぞれのテーブルが持っているカラムです。
post...id, code, nickname, body
post_tag...id, post_id, tag_id
tag...id, code, name
type...id, code, name
post.rb
class Post < ApplicationRecord has_many :post_tags, dependent: :destroy has_many :tags, through: :post_tags belongs_to :types accepts_nested_attributes_for :post_tags, allow_destroy: true end
post_tag.rb
class PostTag < ApplicationRecord belongs_to :posts belongs_to :tags end
tag.rb
class Tag < ApplicationRecord has_many :post_tags, dependent: :destroy has_many :posts, through: :post_tags end
type.rb
class Type < ApplicationRecord has_many :posts accepts_nested_attributes_for :posts end
質問
(1)以下の関係を実装したい場合、上記のモデルは問題なさそうでしょうか?
Post:Tag = 多:多
Type:Post = 1:多
(2)この後、scaffoldで生成した投稿ページ(posts_controller)からタグと投稿文を保存したいのですが、
タグ(モデルが別)の保存方法がわかりませんでした。
調べたところ、build...?を利用しているところが多かったのですが、
多:多ではなく1:多の例でした。
多;多はどのように実装すればよいのでしょうか?
(3)rails consoleを使用してPostからTagを取得しようとしたのですが、
うまくいきませんでした。行った手順は以下のとおりです。
post = Post.new #モデル初期化 post.post_tags #post_tagsの取り出し?(空でした) post.tags #tagsの取り出し?(post_tagsが間にあるために取得できないのでしょうか..?)
以上3点です。
この他に、こうするともっと良くなる等ございましたら、ご教授願えますでしょうか。
不明点等ございましたら、お手数ですが質問していただけると嬉しいです。
追加で回答させていただきます。
よろしくお願いいたします。
長文失礼しました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/13 08:06