Rails的未知属性
我在Rails应用程序得到了一个错误Rails的未知属性
代码如下所示:
oders_controller.rb
def payMovie
@order = OrderMovie.new
@user = User.find(session[:user_id])
@order.user = @user
@movie = Movie.find params[:id]
puts "sssssssssssss"
puts @movie.inspect
@order.price = @movie.movieprice
@order.currency = @movie.currency
@order.movie << @movie
if @order.save
flash[:notice] = t("flash.saved")
redirect_to :back
else
redirect_to :back
end
end
型号/ user.rb
class User < ActiveRecord::Base
has_many :comment
has_and_belongs_to_many :knowledgeprovider
has_and_belongs_to_many :channel
belongs_to :oder_movie
models/order_movie.rb
class OrderMovie < ActiveRecord::Base
has_one :user
has_one :movie
end
可能是什么问题?
感谢您的帮助
UPDATE
@order.inspect
<OrderMovie id: nil, price: nil, currency: nil, user_id: nil, created_at: nil, updated_at: nil, movie_id: nil>
@user.inspect
<User id: 3, firstname: "Felix", lastname: "Hohlweglersad"
您的用户模型关系不好,如果你想进行的has_many:通过用户和电影order_movies之间的关系,你的用户必须has_many:order_movies not belongs_to:order_movies。 所以这个错误告诉你,你的用户表中没有order_movie_id外键,因为你定义了错误的关系。所以改变:
belongs_to :order_movie
到
has_many :order_movies
在用户模式。
这里是solution.You已经belongs_to的拼错了:order_movie声明
class User < ActiveRecord::Base
has_many :comment
has_and_belongs_to_many :knowledgeprovider
has_and_belongs_to_many :channel
belongs_to :order_movie
如果你没有order_movie外键然后运行这个migratuons
add_column :users,:order_movie_id,:integer
add_foreign_key :users,:order_movies
是的,这是一个问题。修正了那个谢谢。但仍然是相同的错误 – Felix
请通过放置以上两个命令给出结果user = User.find(session [:user_id]) order.user = @user –
你在用户表中有外键吗? –
已经做到了这一点,但得到了同样的错误.. – Felix
我建议你,你把OrderMovie中的关系改为从has_one中的belongs_to ... –
抱歉已经失去了这个。感谢它现在正常工作! – Felix