2015-02-11 47 views
1

我有一個Developers Table和一個Projects Table。我試圖在我的Rails應用程序中分配這兩個表之間的一對多關係。我是否會將開發人員添加到項目中?在Ruby on Rails中使用「append」運算符的一對多關聯

開發商屬於項目 ,項目有很多開發人員

所以我做了以下。

我創造了這個方法:

def add_to_project 


@project = Project.find_by(:title => params[:title]) 
@developer = Developer.find_by(:name => params[:name]) 

unless @developer.nil? || @project.nil? 

    # @project.developers.push(@developer) 
    @project.developers << @developer 

    if @project.save 

    flash[:notice] = "project was added successfully" 
    else 
    flash[:notice] = "project was not added successfully" 
    end 

else 
    flash[:notice] = "project was not added successfully" 

end 

redirect_to(:action => 'add_dev_proj') # this goes to a page that shows the two tables with the updates 
end 

我獲得我構建了下面這樣的的form_tag的標題和名字的值:

<%= form_tag(:controller => 'projects', :action => 'add_to_project') do %> 
<%= text_field_tag('name', params[:name]) %> 
<%= text_field_tag('title', params[:title]) %> 

<%= submit_tag("Add dev to project") %> 
<% end %> 

嘗試使用導軌這種方法時,我的問題是控制檯它的工作原理,但在我的網絡應用程序沒有修改正在進行。有什麼我在這裏失蹤。另外我確定我的關聯是在我的模型中定義的。

任何見解都會很棒,非常感謝。

+0

爲什麼你不使用has_many關係,你不必使用'append'然後 – Sontya 2015-02-11 10:44:11

+0

有很多使用'has_many:developers',但問題是當我想添加開發人員到我的項目這是使用追加「<<」運算符完成。 – 2015-02-11 10:52:44

+0

在開發人員模型中添加'belongs_to:project'並在項目模型中添加'has_many:developers',並且您在開發人員表中添加了foreign_key作爲'project_id' – Sontya 2015-02-11 10:57:50

回答

0

在開發模式

belongs_to :project 

在項目模型

has_many: developers 

在開發商表中添加foreign_keyproject_id

然後你就可以直接調用

@project = Project.find_by(title: params[:title]) 
@project.developers.create(firstname: params[:name]) 
0

我忘記提及的一個缺失細節是我的開發人員表有一個密碼,並且我啓用了密碼驗證,導致無法保存每當我打電話給developer.save時。現在我提供了developer.password作爲一個實驗(我90%肯定它會工作),然後保存成功「我的數據庫已更新」。

當我試圖追加

irb(main):030:0> dev.save 
(0.1ms) BEGIN 
Developer Exists (0.2ms) SELECT 1 AS one FROM `developers` WHERE (`developers`.`email` = BINARY '[email protected]' AND `developers`.`id` != 1) LIMIT 1 
(0.1ms) ROLLBACK 
=> false 

該錯誤消息我後保存:

irb(main):031:0> dev.errors.full_messages 
=> ["Password can't be blank", "Password is too short (minimum is 4 characters)"] 

所以我的下一步就是要找到一種方法,讓我的應用程序知道,我是管理員並且不需要認證密碼以便成功保存。

非常感謝您的時間和建議......乾杯:-)。