我希望能够在一个表上使用两列来定义关系.所以使用任务应用程序作为示例.
尝试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返回用户1并Task.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
总之
总之我想知道如果我可以通过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方法适用于已定义的属性列表.
必须有办法使这项工作.任何人?
我有一个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) 所以据我所知,twitter不会在twitter api中分享用户的电子邮件.参考http://code.google.com/p/twitter-api/issues/detail?id=353
但是我最近遇到了多个似乎能够检索用户电子邮件的产品.connect.me是一个例子,在用twitter注册后,他们突然收到了我的电子邮件.
fullcontact.com我可以输入与工作相关的电子邮件地址,突然他们知道我的个人推特账号.
任何人都知道他们是如何做到这一点的.它似乎打破了Twitter隐私政策,但如果允许的话,我知道很多开发人员都希望能够访问该功能.
actionmailer ×1
amazon-s3 ×1
associations ×1
carrierwave ×1
fog ×1
mailer ×1
plaintext ×1
twitter ×1