小编Jon*_*ons的帖子

Rails与多个外键关联

我希望能够在一个表上使用两列来定义关系.所以使用任务应用程序作为示例.

尝试1:

class User < ActiveRecord::Base
  has_many :tasks
end

class Task < ActiveRecord::Base
  belongs_to :owner, class_name: "User", foreign_key: "owner_id"
  belongs_to :assignee, class_name: "User", foreign_key: "assignee_id"
end
Run Code Online (Sandbox Code Playgroud)

那么 Task.create(owner_id:1, assignee_id: 2)

这允许我执行Task.first.owner返回用户1Task.first.assignee返回用户2但不User.first.task返回任何内容.这是因为任务不属于用户,属于所有者受让人.所以,

尝试2:

class User < ActiveRecord::Base
  has_many :tasks, foreign_key: [:owner_id, :assignee_id]
end

class Task < ActiveRecord::Base
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

这完全失败,因为似乎没有支持两个外键.

所以我想要的是能够说出User.tasks并获得用户拥有和分配的任务.

基本上以某种方式建立一个等于查询的关系 Task.where(owner_id || assignee_id == 1)

那可能吗?

更新

我不打算使用finder_sql,但这个问题的未被接受的答案看起来接近我想要的:Rails - …

ruby-on-rails associations model-associations ruby-on-rails-4

74
推荐指数
4
解决办法
4万
查看次数

为Carrierwave添加其他标头以进行Amazon s3加密

总之
总之我想知道如果我可以通过carrierwave雾连接到Amazon S3发送额外的头?

深入
我最近发现亚马逊支持文件的客户端和服务器端加密.更多信息» http://docs.amazonwebservices.com/AmazonS3/latest/dev/SSEUsingRESTAPI.html

我目前正在rails应用程序中使用carrierwave将文件上传到亚马逊s3.
对于服务器端加密,亚马逊要求添加到请求的x-amz-server-side-encryption = AES256的标头.

所以我想弄清楚如何通过载波和雾来发送额外的标题.

我的想法是,也许我可以使用像下面这样的fog_attribute配置行,也许这可能有效,但我不确定fog_attribute是用于partiular属性还是只是一个毯子标题部分.

config.fog_attributes = {'x-amz-server-side-encryption' => 'AES256','Cache-Control'=>'max-age=315576000'}  # optional, defaults to {}
Run Code Online (Sandbox Code Playgroud)

所以我终于让我的应用程序在形状上测试这个但不幸的是它没有用.

我还发现:https://github.com/geemus/fog/commit/070e2565d3eb08d0daaa258ad340b6254a9c6ef2在雾库中提交,让我觉得fog_attributes方法适用于已定义的属性列表.

必须有办法使这项工作.任何人?

ruby-on-rails amazon-s3 carrierwave fog

12
推荐指数
1
解决办法
2324
查看次数

仅发送纯文本电子邮件,Rails mime部分包含在正文中

我有一个rails应用程序发送许多通知电子邮件.我们希望让用户选择纯文本和HTML.

最初我们的愿望总是多部分,所以我们没有设置内容类型,只是简单地使用了email.html.erb和email.text.erb视图,这两个视图都会被发送并创建一个多部分.

但是现在,当我们根据用户首选项指定content_type时,它确实将其自身设置为multipart或plain/text,但html模板作为纯文本包含在纯文本电子邮件的底部.

这是代码:

邮件行动:

def client_creation(client) # When client checks in for the first time
   @client = client
   content_type = client.company.html_emails ? nil : 'text/plain'
   email_prefix = client.company.brand ? client.company.brand.email_subject_prefix : 'MonitoringClient'
   mail(to: @client.company.administrative_reporting_address, subject: "[#{email_prefix}][Initial Check-in] #{@client.machine_name.html_safe} of #{@client.clientgroup.name}", content_type: content_type)
end
Run Code Online (Sandbox Code Playgroud)

上面的代码检查客户公司是否启用了html_emails,如果是,则将content_type设置为plain/text.其结果如下:

IRB输出:

#<Mail::Message:70269523266340, Multipart: false, Headers: <Date: Sun, 11 Nov 2012 09:09:43 -0600>, <From: notifications@monitoringclient.com>, <To: ommitted>, <Message-ID: <509fbfb7e0c4e_11e113fe8e4435b4084183@Jonathan.local.mail>>, <Subject: [Initial Check-in] Jonathan of hivemind labs>, <Mime-Version: 1.0>, <Content-Type: text/plain>, <Content-Transfer-Encoding: 7bit>> 
Run Code Online (Sandbox Code Playgroud)

到目前为止,如此好的Multipart是false content_type是text/plain但是接下来是生成的电子邮件正文:

----==_mimepart_509fbfb7ddb8b_11e113fe8e4435b4083853
Date: …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails actionmailer plaintext mailer

6
推荐指数
1
解决办法
6340
查看次数

访问Twitter用户的电子邮件?(connect.me和fullcontact.com似乎具有此功能)

所以据我所知,twitter不会在twitter api中分享用户的电子邮件.参考http://code.google.com/p/twitter-api/issues/detail?id=353

但是我最近遇到了多个似乎能够检索用户电子邮件的产品.connect.me是一个例子,在用twitter注册后,他们突然收到了我的电子邮件.

fullcontact.com我可以输入与工作相关的电子邮件地址,突然他们知道我的个人推特账号.

任何人都知道他们是如何做到这一点的.它似乎打破了Twitter隐私政策,但如果允许的话,我知道很多开发人员都希望能够访问该功能.

twitter

3
推荐指数
1
解决办法
5176
查看次数