Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3使用include进行选择_Ruby On Rails_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails Rails 3使用include进行选择

Ruby on rails Rails 3使用include进行选择,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我真的很难解决这个问题。我有两种不同的用户模型(志愿者和老年人),我想把它们联系起来。我已经建立了一个habtm关系,并且可以加载,例如,一个有一名高级/高级人员的志愿者。但我想过滤加载的属性。你怎么能做到这一点?(我想这样做是为了安全,但我甚至不确定这是否是一个问题?) 我知道include with select不起作用,我一直在尝试使用连接,但无法使其起作用 这就是我如何将所有高级属性加载到志愿者中的方式 class VolunteersController < Applicatio

我真的很难解决这个问题。我有两种不同的用户模型(志愿者和老年人),我想把它们联系起来。我已经建立了一个habtm关系,并且可以加载,例如,一个有一名高级/高级人员的志愿者。但我想过滤加载的属性。你怎么能做到这一点?(我想这样做是为了安全,但我甚至不确定这是否是一个问题?)

我知道include with select不起作用,我一直在尝试使用连接,但无法使其起作用

这就是我如何将所有高级属性加载到志愿者中的方式

class VolunteersController < ApplicationController

    def index
        @volunteer = Volunteer.select(Volunteer::PROFILE_COLUMNS).find(current_volunteer)
    end

end
class自愿控制器
型号:

class Volunteer < ActiveRecord::Base
    has_and_belongs_to_many :seniors
    ...
end

class Seniors < ActiveRecord::Base
    has_and_belongs_to_many :volunteers
    ...
end
class志愿者
您可以尝试:

@volunteer = Volunteer.find(current_volunteer, 
:select => Volunteer::PROFILE_COLUMNS, 
:joins => "left outer join seniors on seniors.id = volunteers.senior_id")

不过还没有测试过。更好的解释在

通常你控制显示的内容,而不是从数据库中获取的内容。好的,但是你应该从@志愿者中删除密码字段(加密)和其他敏感信息,还是将其保存在@志愿者中是安全的?(例如,我在“@voluncil.seniors.first.password”附近走动)重点是敏感信息不应进入视图。我不在乎它被剥离到哪里,在模型中还是在视图中。视图只需调用几个方法。我只是确定它不会。我是说除了你没有人可以访问@志愿者,对吗?另一方面,我在这里从来没有任何核秘密:)很高兴了解你试图保护自己的情况。我能想象的是,一个开发人员错误地键入了'@志愿者.encrypted_password'而不是'@志愿者.name'。如果是这样的话,你最好保护自己不受那个开发人员的影响:)如果你能想出更可能的方案,我可能会改变我的态度。好吧,那么我想我应该是这样的。谢谢你澄清这一点。谢谢你的回答,我实际上看了那篇文章,但我无法让它发挥作用。一个问题是我的连接是由seniors\u志愿者表建立的。ofc将列指定为seniors.first\u name和志愿者.first\u name。但最终我还是得到了所有的属性。也许我在sql中做错了什么:“左外加入长者志愿者在长者志愿者上。志愿者id=志愿者。id左外加入长者在长者上。id=长者志愿者。长者id”