我在微博模型上创建了一个方法,它采用了一组user_ids.在这个方法中,我使用以下'find'方法为数组中的所有用户提取所有帖子.
find(:all, :conditions => ["user_id IN (?)", args.join(',')])
Run Code Online (Sandbox Code Playgroud)
但是,当ActiveRecord为此查询生成SQL时,它以单引号括起逗号分隔的Ids列表.这会导致查询仅为单引号内的第一个数字而不是所有数字提取帖子.
SELECT `microposts`.* FROM `microposts` WHERE (user_id IN ('3,4,5')) ORDER BY microposts.created_at DESC
Run Code Online (Sandbox Code Playgroud)
查询应该看起来像这样才能正常工作,但我无法弄清楚如何让Ruby将数组转换为没有引号的昏迷分隔列表,我知道它必须是简单的东西,我只是想念它并且可以'在Google上找到修复此问题的任何内容.我发现的所有帖子都使用相同的.join(',')方法来对齐Array.
SELECT `microposts`.* FROM `microposts` WHERE (user_id IN (3,4,5)) ORDER BY microposts.created_at DESC
Run Code Online (Sandbox Code Playgroud)
还有一个事实是帮助你弄清楚我的问题是我正在以下面的方式构建我传入方法的数组.不确定这是否会影响事情.
ids = Array.new
ids.push(current_user.id)
ids = ids + current_user.friends.map(&:id)
ids = ids + current_user.reverse_friends.map(&:id)
Run Code Online (Sandbox Code Playgroud)
在此先感谢能帮我恢复工作的人;)
我在哪里可以为SAML 2.0 SSO挖掘Ruby或Ruby on Rails库.我有一组要构建的企业应用程序,但需要从中央身份验证系统进行联合登录.我在Microsoft .Net环境中使用过SAML 1.1和SAML 2.0,但还没有看到一个处理Ruby on Rails的SAML提供程序和消费者的库.有人可以指出我正确的方向或告诉我,我是否需要自己建立图书馆?
我有一个HTML页面,一旦在用户的浏览器中加载,'list'状态被激活,'list'部分被Angular拉出并填充了服务器列表.
每个服务器都有一个"详细信息"链接,用于指定该服务器的"详细信息"状态.
<td><a ui-sref="details({ serverName: '{{server.name}}' })">Details</a></td>
Run Code Online (Sandbox Code Playgroud)
渲染时,'ui-sref'会根据路径及其可选参数生成预期的'href'网址.
<a ui-sref="details({ serverName: 'SLCMedia' })" href="#/details/SLCMedia">Details</a>
Run Code Online (Sandbox Code Playgroud)
单击时,它按预期工作,并拉出"详细信息"部分,并在分配给该状态的控制器中拉出指定名称的服务器.
我遇到的问题是,一旦加载'细节'部分,它也有一个'ui-sref'到'edit'状态.
<a ui-sref="edit({ serverName: '{{server.name}}' })">
<button class="btn btn-lg btn-labeled btn-primary">
<span class="btn-label icon fa fa-edit"></span>
Edit
</button>
</a>
Run Code Online (Sandbox Code Playgroud)
但是当加载此部分时,'ui-sref'不会生成正确的'href'网址.
<a ui-sref="edit({ serverName: 'SLCMedia' })" href="#/edit/">
<button class="btn btn-lg btn-labeled btn-primary">
<span class="btn-label icon fa fa-edit"></span>
Edit
</button>
</a>
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,'href'网址是'#/ edit /'而不是'#/ edit/SLCMedia'.它必须是我想念的简单事物.国家的变化是否与它有关?
以下是该页面的所有已定义"状态".
// Create the Angular App to rule the Server Management Page
var serverApp = angular.module('serverApp', [
'ui.router',
'serverControllers',
'utilitiesService'
]);
serverApp.config(function …Run Code Online (Sandbox Code Playgroud) 首先,应用程序发送的所有其他邮件都可以正常工作.只有在调用Devise中的重置密码时才会这样.从堆栈跟踪以及WEBrick输出完成电子邮件的创建,然后以EOFError终止.
Application Stack:
C:/Ruby192/lib/ruby/1.9.1/net/protocol.rb:135:in `read_nonblock'
C:/Ruby192/lib/ruby/1.9.1/net/protocol.rb:135:in `rbuf_fill'
C:/Ruby192/lib/ruby/1.9.1/net/protocol.rb:116:in `readuntil'
C:/Ruby192/lib/ruby/1.9.1/net/protocol.rb:126:in `readline'
C:/Ruby192/lib/ruby/1.9.1/net/smtp.rb:935:in `recv_response'
C:/Ruby192/lib/ruby/1.9.1/net/smtp.rb:921:in `block in getok'
C:/Ruby192/lib/ruby/1.9.1/net/smtp.rb:945:in `critical'
C:/Ruby192/lib/ruby/1.9.1/net/smtp.rb:919:in `getok'
C:/Ruby192/lib/ruby/1.9.1/net/smtp.rb:913:in `quit'
C:/Ruby192/lib/ruby/1.9.1/net/smtp.rb:619:in `do_finish'
C:/Ruby192/lib/ruby/1.9.1/net/smtp.rb:528:in `start'
mail (2.2.14) lib/mail/network/delivery_methods/smtp.rb:127:in `deliver!'
mail (2.2.14) lib/mail/message.rb:1967:in `do_delivery'
mail (2.2.14) lib/mail/message.rb:228:in `block in deliver'
actionmailer (3.0.3) lib/action_mailer/base.rb:401:in `block in deliver_mail'
activesupport (3.0.3) lib/active_support/notifications.rb:52:in `block in instrument'
activesupport (3.0.3) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (3.0.3) lib/active_support/notifications.rb:52:in `instrument'
actionmailer (3.0.3) lib/action_mailer/base.rb:399:in `deliver_mail'
mail (2.2.14) lib/mail/message.rb:228:in `deliver'
devise (1.1.5) lib/devise/models/recoverable.rb:31:in `send_reset_password_instructions'
devise (1.1.5) lib/devise/models/recoverable.rb:59:in `send_reset_password_instructions'
devise (1.1.5) app/controllers/devise/passwords_controller.rb:13:in …Run Code Online (Sandbox Code Playgroud) 只是想知道是否有人明确知道ASP.net HttpRuntime.Cache使用的默认序列化是什么?是二进制,XML,还有别的什么?
我问,因为我的情况是我使用相同自定义类型的多个对象填充通用List.自定义类型是POCO,没有什么特别之处.它的所有属性都是公开的{get; 组; 它是公共的,它没有继承,它没有接口.事实上,它比我们正在缓存的许多其他对象复杂得多,没有问题.我已经尝试将[Serializable]属性添加到自定义类,它没有任何效果.
我使用唯一键将列表添加到缓存中.在将列表插入缓存之前,已对列表进行了验证,列表中的对象也已经过验证.但是当列表从缓存中拉回时它是一个空列表(NOT NULL),它根本没有任何项目.这意味着列表正被添加到缓存中并且是可检索的,但由于某种原因,缓存在序列化列表中的对象时出现问题.
我发现这怪异怪异,因为我有另一个自定义对象列表,它们更加复杂(包括继承,接口,还包含属性,这些属性是其他复杂对象的通用列表),并且这些列表的缓存可以正常工作.
工作和非工作列表都在使用缓存数据的ASP.net用户控件之外的C#类中进行管理.这两个缓存处理类都调用完全相同的缓存管理器类单例实例,该实例包装HttpRuntime.Cache以提供用于拉动和将对象推入缓存的类型化方法.
任何人都有任何想法会导致这种情况发生.我唯一可以解决的是Document对象的'Blurb'属性可能包含HTML,但如果ASP.net使用二进制序列化缓存,我看不出它会如何做.
这是班级
public class Document
{
public string ContentTypeId { get; set; }
public string ContentId { get; set; }
public bool IsCustom { get; set; }
public Language DocLanguage { get; set; }
public string RegularTitle { get; set; }
public string InvertedTitle { get; set; }
public string Blurb { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是语言属性中使用的子类
public class Language
{
public string Name { get; set; }
public string Code …Run Code Online (Sandbox Code Playgroud) 大家好,我正在为我的开发机器寻找一个好的SMTP服务器.我正在运行Linux mint 10.我需要一个良好的SMTP电子邮件陷阱,它将侦听localhost端口并拦截源自我正在开发的Ruby on Rails应用程序的所有电子邮件,而不会将它们转发给全世界.该应用程序需要允许我打开和查看电子邮件,以便我可以查看正在发送的测试电子邮件.
我问,因为当我在Windows上工作时,我可以安装大量的小应用程序,这些应用程序将在端口25上进行侦听,并在我开发和测试它们时收集从我的应用程序发送的所有电子邮件.这些小应用程序允许我在收到后打开电子邮件,以便我可以验证电子邮件的内容.我在Linux上需要类似的东西(确切地说是Mint 10).
高级谢谢
背景:
我按照这里的教程在我的应用程序中设置了多态用户收藏夹数据模型.这让我可以让用户在系统中创建几乎任何实体,我has_many :favorites, :as => :favorable在其模型中添加了一个最喜欢的实体.我计划使用它来实现Facebook风格的"Like"系统以及其他几个类似的系统.
首先,我将优先级添加到Post模型(每个用户都可以在Facebook上创建状态更新).我完成了所有这些工作并进行了单元测试,因此我知道数据模型在关系的任何一方(User和Post)都是健全的.
细节:
我有一个带有单索引方法和视图的Home控制器.
在索引视图中,我为用户和用户的朋友渲染了帖子
我希望用户能够喜欢他们朋友的帖子
Posts控制器只有一个创建和一个带有相关路由的destroy方法(不是一个完整的成熟资源),并且通过AJAX帖子通过Post方法创建和删除没有问题
我被卡住了
如何添加链接或按钮以将帖子添加到用户的收藏夹?
根据教程,通过多态关联创建新收藏夹的方法是从Post.favorites.build(:user_id => current_user.id)中完成.从这个方向构建处理拉出Post的ID和TYPE,我所要做的就是传递用户的id
我是否使用类似于Post控制器的Create and Destroy方法将AJAX表单发布到收藏夹控制器?
从ASP.Net N-Tier Web应用程序开发到Rails MVC,我仍然在努力解决大脑中的电线问题.直到现在还没太糟糕;)
我打赌那里有宝石可能会这样做,但我需要学习,最好的办法就是忍受它.也许来自在其应用程序中实现了喜欢功能的人的教程或示例代码会有所帮助.
在此先感谢您的帮助!
仅在Rails 2.4.1上运行的Rails 5.0.2 API应用程序。
application.rb
config.time_zone = "UTC"
config.active_record.default_timezone = :utc
Run Code Online (Sandbox Code Playgroud)
模型查询
weight_entry = @current_user.weight_entries
.where(taken_on: Time.now.beginning_of_day..Time.now.end_of_day)
.first
Run Code Online (Sandbox Code Playgroud)
执行以下查询
WeightEntry Load (3.2ms) SELECT "weight_entries".*
FROM "weight_entries" WHERE "weight_entries"."user_id" = $1
AND ("weight_entries"."taken_on" BETWEEN $2 AND $3)
ORDER BY "weight_entries"."id"
ASC LIMIT $4 [["user_id", 3],
["taken_on", 2017-06-07 06:00:00 UTC],
["taken_on", 2017-06-08 05:59:59 UTC], ["LIMIT", 1]]
Run Code Online (Sandbox Code Playgroud)
如您所见,尽管全局设置了UTC,但针对数据库的ActiveRecord查询在时间部分仍使用偏移量(6小时):
["taken_on", 2017-06-07 06:00:00 UTC],
["taken_on", 2017-06-08 05:59:59 UTC], ["LIMIT", 1]]
Run Code Online (Sandbox Code Playgroud)
我希望UTC是应用程序中的默认值,时间戳看起来会更像这样:
["taken_on", 2017-06-07 00:00:00 UTC],
["taken_on", 2017-06-08 23:59:59 UTC], ["LIMIT", …Run Code Online (Sandbox Code Playgroud) ruby ×5
activerecord ×2
actionmailer ×1
angularjs ×1
asp.net ×1
caching ×1
datetime ×1
devise ×1
javascript ×1
linux ×1
saml ×1
smtp ×1
testing ×1
timezone ×1