条件“attr_accessible”在 Ruby on Rails 中使用 ActiveResource

发布于 2024-10-11 12:02:06 字数 806 浏览 6 评论 0原文

我有两个 RoR3 应用程序:

  • http://users.domain.local
  • http://profiles.domain.local

我创建了“users/models/profile.rb” :

class Profile < ActiveResource::Base
  self.site = "http://profiles.domain.local"
end

在“profiles/models/profile.rb”中,我有:

attr_accessible :name

我的配置文件的 SQL 表包含以下列:

  • id
  • name
  • user_id

因此,如果我运行 Profile.create(:name => "test_name") a新的配置文件将在 http://profiles.domain.local 中创建,名称为“test_name”。

出于明显的安全原因,我不想访问“user_id”属性,但我需要在从“用户”应用程序创建配置文件时设置该属性。

我尝试了很多方法来做到这一点,但我找不到简单的解决方案。也许,可以在“profile”应用程序的“attr_accessible”附近使用 if 语句来填充来自“user”应用程序的请求。

有人可以帮助我吗?

I have two RoR3 application:

  • http://users.domain.local
  • http://profiles.domain.local

I created the 'users/models/profile.rb':

class Profile < ActiveResource::Base
  self.site = "http://profiles.domain.local"
end

In 'profiles/models/profile.rb' I have:

attr_accessible :name

My profile's SQL table contains these columns:

  • id
  • name
  • user_id

So if I run Profile.create(:name => "test_name") a new profile will be created in http://profiles.domain.local with the name "test_name".

For obvious security reasons, I don't want to make accessible the 'user_id' attribute, but I need to set that on the profile creation from the 'users' application.

I tryed a lot of way do make that, but I can't find an easy solution. Maybe, it is possible with an if statement near the 'attr_accessible' of the 'profile' application that fill a request from the 'user' application.

Can somebody help me?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ペ泪落弦音 2024-10-18 12:02:06

您可以尝试类似 Amazon Web Services 所做的事情:对每个请求使用一个非常长的、随机生成的密钥。检查您的个人资料应用程序中的密钥是否正确,如果正确,请更新属性。

You could try something like what Amazon Web Services does: use a very long, randomly generated key with each request. Check that key is correct in your profiles app, and if yes, update the attribute.

左岸枫 2024-10-18 12:02:06

解决方案:不要简单地使用 Profile.create,而是使用关联构建器。保护 user_id 属性并使用 user.profiles.create!(params[:profile]) 让它自动设置配置文件的 user_id 字段无论user 对象是什么。

Solution: Don't use simply Profile.create, use the association builders instead. Protect the user_id attribute and use user.profiles.create!(params[:profile]) to have it automatically set the user_id field for profiles to whatever the user object is.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文