2016-11-27 22 views
1

問題を解決する答えが見つからないため、ここでこの質問をします。私は、それぞれの旅行が多くのポストを持っているように、belongs_to旅行を作成したいと思います。レールエラークラスが存在する必要があります - アソシエーション

class Travel < ApplicationRecord 
    has_many :posts 
    belongs_to :user 
end 
:だからここに私のtravel.rbファイルで旅行

を存在している必要があります

1エラー 保存beignからこの記事を禁止:私はポストを作成するときしかし、私は私の見解でこのエラーメッセージを持っています

そして、私のpost.rbファイル:

class Post < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :travel 

    geocoded_by :country 
    after_validation :geocode 
end 

誰かが問題どこにあると私は解決策を説明できる知っていますか? ありがとう!

答えて

5

Rails 5は、デフォルトでbelongs_toの関連付けを行います。あなたは協会をオプションにしたいので、もしあなたがTravel

@post = Post.new(post_params) 
@post.travel = travel 
@post.save 

に関連付けないPostを作成することはできません、あなたは

class Post < ActiveRecord::Base 
    belongs_to :travel, optional: true 
end 
+0

こんにちは明示的に言及する必要があります!私はposts_controller.rbにPost.createを作成していません。このメソッドを使用します:@ post = Post.new(posts_params)と私は新しいメソッドでこれらのパラメータを渡しました:(:title、:country 、:description) –

+3

投稿オブジェクトを作成しますが、保存する前に移動オブジェクトに関連付けられていることを確認する必要があります。 – usha

+1

@AntoninMrchd '@post = Post.new(params); @ post.save'は(基本的に) 'Post.create(params)'のより長いバージョンです。 – guiniveretoo

関連する問題