我有以下代码:

  def my_model
    MyModel.find_or_create_by(my_model_id: id)
  end

这段代码正在运行,但是因为我要将它移到一个Mixin中,所以my_Model_id应该是一个变量.为此,我创建了以下方法

  def attribute_name_for_relation
    (self.class.name.downcase + "_id").to_sym
  end

然而,当然,MyModel.find_or_create_by(attribute_name_for_relation: id)个不会起作用.

有没有一种方法可以用动态变量代替my_model_id:

推荐答案

试一试MyModel.find_or_create_by(attribute_name_for_relation => id)

(attribute_name_for_relation:是一个符号,而不是对您的方法的调用)

Ruby-on-rails相关问答推荐

ruby on rails:错误未知关键字::当使用google-cloud-storage下载文件时,soft_deleted

Rails 7 Active Record::SessionStore -如何获取控制器中当前会话的数据库ID?

确定当前太平洋时区是PST还是PDT

刺激不添加侦听器以搜索表单输入

错误原始错误:未安装 ImageMagick/GraphicsMagick

Rails 自动加载完全大写的名称,如 API

如何在 Rails 中使用延迟作业(job)取消预定作业(job)?

rake assets:precompile try 连接到数据库

价格字段的字符串、小数或浮点数据类型?

我如何存根 find_each 以在 rails 3 中进行 rspec 测试

如何在 rspec 中运行单个测试?

使用 jQuery 在 Rails 中不显眼的动态表单字段

带有 master.key 的 Rails 5.2 - Heroku 部署

我如何找出为什么我不能#destroy() 记录?

导轨链接到:远程

默认呈现 JSON 而不是 HTML?

如何在 Rails 迁移中添加一些插入?

使用 heroku 和 namecheap 设置自定义域

Ruby 中有与 slice 函数相反的函数吗?

在 Rails 3 中突出显示当前页面的最佳方法? -- 有条件地将css类应用于链接