从rails上的ruby中的多个表中获取数据

时间:2014-03-12 12:09:34

标签: ruby-on-rails

我在serach页面中有一个文本框,我在其中输入公司名称,我希望当我在文本框中输入公司名称例如“abc”时,它会从用户表和公司名称中输入user's name来自专业表:下面是搜索页面控制器:

def search
    @students=Students.all
    if ( !params[:tf_Company].blank? or params[:tf_Company] !="" )
      @user_Company= User.joins(:professions).where(:professions => {:Company=> params[:tf_Company].strip}).collect(&:First_Name)
    end     

    render 'search'
  end

用户模型

class User < ActiveRecord::Base
  has_many :professions, dependent: :destroy
end

专业模式

class Profession < ActiveRecord::Base
    belongs_to :user
    validates :UserID, presence: true
end

我收到以下错误:

SQLite3::SQLException: no such column: professions.user_id: SELECT "users".* FROM "users" INNER JOIN "professions" ON "professions"."user_id" = "users"."id" WHERE "professions"."Designation" = 'Lead'

但它不能正常工作,请帮助我,等待你的回复。感谢

1 个答案:

答案 0 :(得分:0)

连接条件是在user_id表中查找foreign_key professions,遗憾的是该表不存在。因此,错误。

查看Profession模型,我假设您在professions表中包含了foreign_key,但将其命名为UserID

我建议你坚持使用foreign_key作为associationname_id的rails约定,在我们的例子中user_id

但是如果您仍想以UserID作为foreign_key,请在both sides of association中指定,如下所示:

class Profession < ActiveRecord::Base
    belongs_to :user, foreign_key: :UserID
    validates :UserID, presence: true
end

class User < ActiveRecord::Base
  has_many :professions, foreign_key: :UserID, dependent: :destroy
end