Ruby on rails一对多关联

问题描述:

我对rails很新颖。我有一个一对多的协会。 Table1带有几个字段。一个字段是标题位置,另一个字段是ccode。表2如何只有2个字段,第一个字段也是位置,第二个字段也是ccode。这个表只是为了保持我的位置。在Table1中,当我创建一个对象时,我分配了ccode,并且我想从Table2中获取相应的位置给ccode。表2 has_many表1和表1属于表2。此外,我想在<table>标记中显示索引视图中的位置。我认为我的视图代码看起来就像我找到的例子,我也足够了解html。我得到的问题是我的Table2对象返回nil。Ruby on rails一对多关联

这是我的Table1模型的样子。

class Table1 < ActiveRecord::Base 
    belongs_to :table_2 

    require 'csv' 

    def self.import(file) 
     CSV.foreach(file.path, headers: true, row_sep: :auto, col_sep: "\t") do |row| 
      Table1.create! row.to_hash 
     end 
    end 
end 

这是我的Table2模型的样子。

class Table2 < ActiveRecord::Base 
    self.table_name = 'table_2' 
    self.primary_key = 'ccode' 
    has_many :table1 
end 

这里是Table1Controller样子

class FinancialsController < ApplicationController 

    def index 
     @financials = Financial.all 
    end 

    def create 
     @financial_loc_ccode = FinancialLocCcode.create(location_code: params[:location_cd], ccode: @financials.ccode) 
    end 
end 

我没有表2控制器,一切都在表1控制器完成,我想这是因为当我开始这个项目已经有一个表为表2创建。

就像我之前说过的,我对Rails很陌生,仍然在学习模型和控制器之间的关系,以及如何操纵数据,并且已经在html中显示它。

任何帮助将不胜感激。

+0

你的问题是什么? – jvillian

+0

那么你的具体问题是该协会没有发生?你提到表2返回零。什么时候?当你创建table1对象时,你传递给他们一行...你是否也传递给他们一个Table2 ID?如果不是,那么与Table2对象的关联永远不会发生。 – toddmetheny

我将集中讨论Table2为零。

这是零,因为你没有创建它。

进入您的终端输入rails g controller table2 create

打开该文件和空create方法里面,你会创建新的表2的对象。

您可以通过多种方式做到这一点,但是当您关联时最重要的一点是您需要在创建关联时定义关联。

我给你举个例子:

比方说,我有一个用户模式

用户模型

class User < ActiveRecord::Base 
has_many :posts 

end 

现在让我们假设我有一个Post模型和我想要的用户能够创建很多帖子。

邮政型号

class Post < ActiveRecord::Base 
belongs_to :user 

end 

现在,这是我们将利用自己的表2控制器的重要组成部分

当我创建一个新的职位,它有belongs_to用户,为此我们将尽这

柱控制器

class PostsController < ApplicationController 

    def create 
    #store the object that has many posts as a variable 
    @user = current_user 

    #the important part, when you create a post you need to do this 
    @post = @user.posts.create(post_params) 
    end 

end 

这里发生的事情是,Rails在@user的所有权下创建新帖子。这就是你如何通过关联建立关系。

我希望这有助于清理一些关系,如果不是这里有一些文件可能也有帮助。

http://guides.rubyonrails.org/association_basics.html