ruby-on-rails - Rails 如何设置不是数据库字段的临时变量

标签 ruby-on-rails activerecord

对于我的应用程序,我有不同的注册入口点,以不同的方式验证事物。

因此,在主注册中,除了电子邮件和密码字段外,什么都不需要。在替代注册字段中,需要更多。所以在用户模型中我有

validate_presence_of :blah, :lah, :foo, :bah, :if => :flag_detected

def flag_detected
  !self.flag.nil?
end

我想通过 Controller 设置该标志。但是,该标志不是数据库字段。我只是想知道这是否可以在 Rails 中实现,或者我的想法有问题?如果是这样,实现这一目标的最佳方法是什么?谢谢。

最佳答案

您需要的是attr_accessor

class User < ActiveRecord::Base
  attr_accessor :flag
  attr_accessible :flag # if you have used attr_accessible or attr_protected else where and you are going to set this field during mass-assignment. If you are going to do user.flag = true in your controller's action, then no need this line
end

基本上attr_accessor :flag创建 user.flaguser.flag = ...模型的方法。

attr_accessible用于批量赋值保护。

关于ruby-on-rails - Rails 如何设置不是数据库字段的临时变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9697041/

相关文章:

ruby-on-rails - 猴子修补事件作业

ruby-on-rails - 下周四(或一周中的任何一天)找到 Ruby

ruby-on-rails - 设备中的匿名用户 - Rails

ruby-on-rails - 在 Rails 5 中,如何返回两个作用域的联合或将它们合并为一个?

ruby-on-rails - 查找具有大于某个关联的 x 的所有对象

ruby-on-rails - 在没有额外的 sql 查询的情况下过滤 activerecord 关系?

php - 从 2 个表中选择以生成 slug。事件记录 - Codeigniter 3

sql - 使用 ActiveRecord 将 300M 行数据集插入 PostgreSQL

ruby-on-rails - Ruby on Rails : testing if ActiveRecord results include a value

ruby-on-rails - 禁用关于方法的 Rubocop 投诉