タイトルで述べたように、Rails 4 アプリを作成しました。
- モンゴイド(5.1.3)
- 考案 (4.2.0)
- simple_form (3.2.1)
以下のコマンドでアプリをセットアップしました。
rails g mongoid:config
rails g simple_form:install --bootstrap
rails g devise:install
rails g devise User
rails g scaffold post title content:text user:references
user.rb
モデル ファイルに以下のコードを追加して、 2 つのモデルを関連付けます。
embeds_many :posts
アプリを実行してユーザーを作成すると、http://localhost:3000/posts/newにアクセスして新しい投稿を作成すると、次のエラーが表示されます。
Started GET "/posts/new" for 127.0.0.1 at 2016-07-29 19:54:21 +0300
Processing by PostsController#new as HTML
MONGODB | Adding localhost:27017 to the cluster.
MONGODB | localhost:27017 | mongoblog_development.find | STARTED | {"find"=>"users", "filter"=>{}}
MONGODB | localhost:27017 | mongoblog_development.find | SUCCEEDED | 0.0009257450000000001s
Rendered posts/_form.html.erb (134.4ms)
Rendered posts/new.html.erb within layouts/application (140.6ms)
Completed 500 Internal Server Error in 144ms
ActionView::Template::Error (undefined method `user_ids' for #<Post _id: 579b8a3d419a8f180afbb798, title: nil, content: nil>
Did you mean? user?):
4: <div class="form-inputs">
5: <%= f.input :title %>
6: <%= f.input :content %>
7: <%= f.association :user %>
8: </div>
9:
10: <div class="form-actions">
app/views/posts/_form.html.erb:7:in `block in _app_views_posts__form_html_erb__2731111319355307354_47423040086160'
app/views/posts/_form.html.erb:1:in `_app_views_posts__form_html_erb__2731111319355307354_47423040086160'
app/views/posts/new.html.erb:3:in `_app_views_posts_new_html_erb__3061427264044886497_70253725122920'
検索エンジンとここで検索しましたが、この問題に関連するものは何もありませんでした。どうすれば修正できますか?
一時的な解決策:
モデル ファイルの と の関連付けをとに置き換えるembeds_many
と、アプリが機能します。この置換により、s の属するまたはsにアクセスできます。と を使用して、最初の状況で関連付けを行うことができるかどうか疑問に思います。embedded_in
has_many
belongs_to
Post
User
User
Post
embeds_many
embedded_in