2016-06-08 84 views
0

我在Rails應用程序得到了一個錯誤Rails的未知屬性

enter image description here

代碼如下所示:

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" 

enter image description here

回答

1

您的用戶模型關係不好,如果你想進行的has_many:通過用戶和電影order_movies之間的關係,你的用戶必須has_many:order_movies not belongs_to:order_movies。 所以這個錯誤告訴你,你的用戶表中沒有order_movie_id外鍵,因爲你定義了錯誤的關係。所以改變:

belongs_to :order_movie 

has_many :order_movies 

在用戶模式。

+0

已經做到了這一點,但得到了同樣的錯誤.. – Felix

+0

我建議你,你把OrderMovie中的關係改爲從has_one中的belongs_to ... –

+0

抱歉已經失去了這個。感謝它現在正常工作! – Felix

1

這裏是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 
+0

是的,這是一個問題。修正了那個謝謝。但仍然是相同的錯誤 – Felix

+0

請通過放置以上兩個命令給出結果user = User.find(session [:user_id]) order.user = @user –

+0

你在用戶表中有外鍵嗎? –