use*_*962 3 ruby-on-rails ruby-on-rails-3
Rails 3.2.3,Ruby 1.9.3p194
尝试使用与HABTM相关的子项目保存项目时,我会覆盖默认生成的SQL,并调用母项目的Name属性和每个关联的子项目.如何正确指定关联的子项目名称?#{record.Name},如示例中所示,导致NameError:未定义的局部变量或#的方法`record'
has_and_belongs_to_many :subproject, :class_name => "Project",
:join_table => "project_subproject", :foreign_key => "projectname", :association_foreign_key => "subprojectname",
:finder_sql => proc { %{SELECT `project`.* FROM `project` INNER JOIN `project_subproject` ON `project`.`name` = `project_subproject`.`subprojectname` WHERE `project_subproject`.`projectname` = '#{self.Name}' } },
#TODO: find correct expression for insert sql
:insert_sql => proc { %{INSERT INTO `project_subproject` (`projectname`, `subprojectname`) VALUES ( "#{self.Name}","#{record.Name}" )} }
Run Code Online (Sandbox Code Playgroud)
有什么建议?
从Rails 3.1解决.发行说明:
以前:insert_sql和:delete_sql on has_and_belongs_to_many关联允许您调用'record'来获取插入或删除的记录.现在将其作为proc的参数传递.
从而:
:insert_sql => proc { |record| %{INSERT INTO `project_subproject` (`projectname`, `subprojectname`) VALUES ( "#{self.Name}","#{record.Name}" )} }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
481 次 |
最近记录: |