我在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'
但它不能正常工作,请帮助我,等待你的回复。感谢
答案 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