ruby-on-rails - 如何使用参数的值为关联模型构建“.collection”方法?
问题描述
我不确定我的问题的正确术语是什么,但是是否可以使用参数的值来“构建”其适当的.collection
方法?
例如,提交有_许多图像、标签和文档。根据用户与之交互的内容,我想创建适当的关联。
最初,我只为标签设置了它......
def add_to_submission(task, user, tag)
sub = Submission.find_or_create_by(task: task, user: user)
sub.tags << tag
end
但是有没有办法可以进一步概括它,以便第三个论点可以更加动态?因此,不仅可以接受标签,还可以像这样使用它
add_to_submission(@task, @current_user, @new_image)
类似于...的东西
def add_to_submission(task, user, associated_item)
sub = Submission.find_or_create_by(task: task, user: user)
items = associated_item.pluralize
sub.items << associated_item
end
解决方案
对于方法的动态调用,.send
可以使用。您可以传递方法名称的符号。你应该能够做这样的事情,但我会确保对你的方法进行良好的单元测试。
def add_to_submission(task, user, associated_item)
submission = Submission.find_or_create_by(task: task, user: user)
children = associated_item.pluralize.to_sym
submission.send(children) << associated_item
end
推荐阅读
- javascript - 更新第二个变量的值时,两个变量的值都发生了变化
- ruby-on-rails - 如何通过复选框标签传递参数
- typescript - rollup-plugin-dts 留下剩余的 d.ts 文件
- flutter - Flutter_声波范围滑块
- javascript - 未捕获的类型错误:无法读取未定义的属性“创建”
- shell - 使用 GET /PUT /POST /DELETe 请求数打印每个 IP 地址的 shell 脚本
- spring-boot - Spring Boot Security + Keycloak 适配器 401 响应当令牌过期而 antMatchers 是 permitAll()
- java - 使用 selenium webdriver 测试排序项目(从高到低)是否正确显示
- graphics - 移动平台上glReadPixels等命令有什么特别的优化吗?
- java - 将 logging.properties 与标准 Appengine Java 11 一起使用