ActiveRecord选择除列之外
有没有一种方法可以指定在ActiveRecord中选择所有列,只有少数几个。 例如,对于用户,我不想选择他们的密码哈希或他们的电子邮件。 这是可能的还是我必须手动硬编码所有列?
谢谢
写一个范围就好
def select_without columns select(column_names - columns.map(&:to_s)) end
像这样的东西?
exclude_columns = ['password', 'email'] columns = User.attribute_names.delete_if(|x| exclude_columns.include?(x)) User.select(columns)
编辑
我忘了我们可以做Array1 – Array2
最好的答案:
exclude_columns = ['password', 'email'] columns = User.attribute_names - exclude_columns User.select(columns)
另一个非常有用的方法是在模型中使用范围,以防您不断地避免使用列。
在我的情况下,我将图像保存到blob字段中,所以我想避免每次都以一种简单的方式加载它们:
scope :select_exclude_image, -> { select( Movie.attribute_names - ['image'] ) }
然后,要避免选择中的图像,您可以执行以下操作:
Movie.select_exclude_image.first
要么
Movie.select_exclude_image.all
我希望它会有所帮助!
- 从范围记录计算总数百分比并显示虚拟属性(Rails / Active Record)
- rails activerecord,friend relation + inverse_friend关系如何获得相互关系? 代码包括在内
- OmniAuth Railscast中的DangerousAttributeError教程:create由ActiveRecord定义
- 覆盖Rails ActiveRecord销毁行为的最佳方法是什么?
- 重命名ActiveRecord / Rails的created_at,updated_at列
- ActiveRecord将字符串解析为datetime?
- 如何确保不通过activerecords将重复的行添加到我的数据库表中?
- MySQL:删除连续的重复值
- 使用ActiveRecord和Rails将数据插入postgresql数据库会出现此错误:RuntimeError:ERROR C22003 Minteger o