2017-03-03 41 views
-1

我找不到與我的關聯的問題,但不斷得到與關聯有關的錯誤。我將has_many添加到學校,並且屬於成員。兩個模型之間的關聯,控制器

class CreateMembers < ActiveRecord::Migration[5.0] 
    def change 
    create_table :members do |t| 
    t.string :name 
    t.string :email 
    t.timestamps 
    end 
end 

class CreateSchools < ActiveRecord::Migration[5.0] 
def change 
create_table :schools do |t| 
    t.string :name 

    t.timestamps 
end 

端 端

class AddSchoolRefToMembers < ActiveRecord::Migration[5.0] 
def change 
    add_reference :members, :school, foreign_key: true 
end 

控制器:

class MembersController < ActionController::Base 
before_action :set_school 
def index 
@members = Member.all 
end 
def new 
    @member = Member.new 
end 

def create 
@member = Member.new(member_params) 
@member.school = @school 
@member.save 
redirect_to members_path 
end 


private 

def set_school 
@school = School.find(params[:school]) 

end 

def member_params 
    params.require(:member).permit(:name, :email,:school) 
end 

+5

究竟是什麼樣的錯誤?你可以顯示日誌嗎? – Codextremist

+0

This SO article on [Adding Assoiations to Existing Models](http://stackoverflow.com/questions/15385087/add-associations-to-exisiting-models)。可能值得一讀。 –

回答

0

而是分配@school本身,你應該分配一個學校的ID:

def create 
@member = Member.new(member_params) 
@member.school = @school.id  # here it is @school.id 
@member.save 
redirect_to members_path 
end 

的關聯使用IDs不是數組。 @school完全返回學校記錄,您只需要該ID即可創建關聯。

+0

這是不對的,你可以在你的控制檯上試試'@member.school = @ school'。 – ashvin

+0

正如您可以在rails文檔中閱讀的那樣,使用關聯的正確方式是通過id:http://guides.rubyonrails.org/association_basics.html我沒有沒有id的工作。 –

+0

編輯:我剛剛在控制檯中試過,它不起作用。當我將用戶分配給post.user_id時,它返回nil並不保存。它是如何爲你工作的? –