小编Emi*_*äck的帖子

Ruby on Rails中多列的索引

我正在实现跟踪用户阅读的文章的功能.

  create_table "article", :force => true do |t|
    t.string   "title"
    t.text     "content"
  end
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止的迁移:

create_table :user_views do |t|
  t.integer :user_id
  t.integer :article_id
end
Run Code Online (Sandbox Code Playgroud)

始终会查询user_views表以查找两列,而不仅仅查找一列.我的问题是我的索引应该是什么样子.这些表的顺序是否存在差异,是否应该有更多选项或其他.我的目标数据库是Postgres.

add_index(:user_views, [:article_id, :user_id])
Run Code Online (Sandbox Code Playgroud)

谢谢.

更新:
因为只有一行在两列中都包含相同的值(因为在知道user_id是否读过article_id时),我应该考虑:unique选项吗?如果我没有弄错,那意味着我不必自己进行任何检查,只需在用户访问文章时插入即可.

indexing database-design ruby-on-rails ruby-on-rails-3

91
推荐指数
2
解决办法
5万
查看次数

检查给定的字符串是否为URL

在我的rails应用程序中,我需要验证用户提供的URL是否真的是一个URL.我只关心HTTP协议(也许是HTTPS,我根本没有考虑过这一点),这让我相信在rails中可能已经存在一些可以为我工作的东西.

如果不是:你能推荐一个正则表达式字符串吗?我在google搜索后发现了一些,但根据用户评论他们似乎都有一两个问题.

谢谢

ruby regex ruby-on-rails

33
推荐指数
1
解决办法
2万
查看次数

将文件发送到Rails JSON API

我知道有类似的问题,但我还没有找到一个好的答案.我需要做的是将一个对象的描述发送到我的一个创建方法,其中包括一些不同的属性,包括一个名为:image,paperclip attachment:

has_attached_file :image
Run Code Online (Sandbox Code Playgroud)

现在我已经读过,通过将图像编码和解码为base64,可以直接在JSON中完成发送图像,但这对我来说感觉就像一个肮脏的解决方案.必须有更好的方法.

另一个解决方案是发送multipart/form-data请求,就像LEEjava在这里描述的那样.这个问题的一个问题是在Rails 3.2.2中没有正确解释请求参数,并且JSON.parse在尝试解析params时吐出错误,或者可能是错误解释某些东西的Rails.

入门POST "/api/v1/somemodel.json?token=ZoipX7yhcGfrWauoGyog"为127.0.0.1在2012-03-18十五时53分30秒+0200处理采用API :: V1 :: SomeController#创建为JSON参数:{" {\n
\"parentmodel \":{\n \"superparent_id \":1,\n
\"description \":\"享受花朵\",\n \"\":"=> {"\n
{\n\"someattribute \":1,\n
\"someotherattribute \":2,\n\"图像\":\ "image1的\" \n
} \n "=> {"\N}\N} "=> nil}},"token"=>"ZoipX7yhcGfrWauoGyog"}

抱歉,这很难读.JSON.parse(params [:parentmodel])在这里是不可能的,我不能JSON.parse(params),因为令牌属性,JSON.parse(params)抛出此错误:

TypeError(无法将ActiveSupport :: HashWithIndifferentAccess转换为String)

这让我相信我要么完全错误地接近这个问题,要么我只是在做某事.无论哪种方式,我们都可以确定我对某事感到错误.:)

有一个更好的方法吗?有人可以指点我任何指南/教程,或写一个答案描述我应该如何处理这个问题?

先感谢您

更新: 所以我现在实际上已经开始工作,但仅限于测试.我不完全确定这是如何工作的,但也许有人可以为我填补空白?这是测试代码的一部分(图像:fixture_file_upload(...)是重要的部分).

parts_of_the_object = { someattribute: 0, someotherattribute: 0, image: fixture_file_upload('/images/plot.jpg', 'image/jpg') }
Run Code Online (Sandbox Code Playgroud)

我的params []看起来像提交的普通HTML表单,这很奇怪(而且很棒):

Parameters: {"superparentid"=>"1", "plots"=>[{"someattribute"=>"0", "someotherattribute"=>"0", "image"=>#<ActionDispatch::Http::UploadedFile:0x007f812eab00e8 @original_filename="plot.jpg", @content_type="image/jpg", @headers="Content-Disposition: form-data; name=\"plots[][image]\"; filename=\"plot.jpg\"\r\nContent-Type: image/jpg\r\nContent-Length: 51818\r\n", @tempfile=#<File:/var/folders/45/rcdbb3p50bl2rgjzqp3f0grw0000gn/T/RackMultipart20120318-1242-1cn036o>>}], "token"=>"4L5LszuXQMY6rExfifio"}
Run Code Online (Sandbox Code Playgroud)

请求就像使用rspec一样发出请求:

post "/api/v1/mycontroller.json?token=#{@token}", thefull_object
Run Code Online (Sandbox Code Playgroud)

所以我已经完成了所有工作.我只是不知道它是如何工作的!我希望能够自己创建这样的响应,不仅仅是来自RSpec.:-)

json ruby-on-rails ruby-on-rails-3.2

29
推荐指数
3
解决办法
3万
查看次数

应用请求成功,但未显示任何通知

我正在使用正常设置通过请求对话发送邀请:

FB.ui(
  {
    method: 'apprequests', 
    message: "Please add me, I am doing the same, thanks!"
  }, 
  function(response) {
   console.log(response);
  }
);
Run Code Online (Sandbox Code Playgroud)

响应成功,response.to显示多个ID.所以发送这些邀请就像它应该的那样.问题是这些应用程序不像通常那样显示为通知,而是在这里找到它们的唯一地方.

API有变化吗?寻找答案给了我没有结果,虽然我确实从2013年2月15日发现了这个错误报告.

Facebook刚刚再次测试,或者API已更改但文档没有?我真的很感激任何见解!

facebook invite apprequests facebook-app-requests facebook-invite

15
推荐指数
3
解决办法
3万
查看次数

Facebook的横向滚动条在自动收报机和聊天边栏中

关于这个问题还有另外一个问题(隐藏滚动条和悬停时显示像facebooks的新聊天边栏一样),但我对他们如何实现滚动条的样式感兴趣.我只有一个猜测,那就是他们将自己的div放在滚动条所在的位置,从而隐藏它并简单地使自己的"抓手"跟随滚动高度.

我需要将垂直滚动添加到固定定位的div,如果有人知道一个好的插件(或者可以告诉我如何制作我自己的)来实现这一点,我很高兴听到他们.

谢谢

html css jquery scrollbar

14
推荐指数
3
解决办法
2万
查看次数

Devise,OmniAuth和Facebook - 如何让用户编辑密码?

我希望其他人有一个很好的解决方案来解决这个问题.我们让用户使用Facebook注册(通过喜欢应用程序),同时他们以我们网站上的用户身份进入我们的数据库.

注册成功后,似乎Devise/OmniAuth正在创建一个随机密码(?).如何让用户编辑他们的个人资料,默认情况下(和应该)在Devise中要求他们输入他们当前的密码?

facebook ruby-on-rails devise omniauth

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

选择Ruby on Rails作为基于浏览器的在线游戏的平台

对于类似Travian的在线策略游戏,我有一些(我认为)非常好的想法.我还有一些内容尚未找到,还有一些我还不知道的其他挑战.

这是一个非常大的项目,对于一个不是熟练的Web开发人员的人来说可能太重了.我还是想尝试一下,但是我在选择平台时遇到了麻烦.世界"尺度"最近被抛到了很多地方,我看到Ruby on Rails因为它不能很好地扩展而受到抨击,所以我来这里得到一些答案.

我喜欢Ruby on Rails,Ruby和Rails.我当然不是专家,但我喜欢与它合作.我之前也使用过Python + Django以及PHP(我不喜欢它).

理想情况下,游戏将拥有每台服务器7000个玩家,可能每秒要处理大量数据.RoR仍然是一个可行的平台吗?

如果这个问题含糊不清,我很抱歉,我想我正在寻找"RoR很好,去吧!" 那种答案.你想要添加的任何东西都可以.

谢谢!

ruby ruby-on-rails

9
推荐指数
2
解决办法
9653
查看次数

使用RDiscount,我应该在哪里进行实际格式化?

我正在使用RDiscount但我的Ruby on Rails技能有限.RDiscount具有.to_html函数,可将Markdown文本转换为HTML.所以这是场景:

<% @posts.each do |post| %>
<h3><%= post.title %></h3>
<%= post.content %>
<% end %>

post.content是我想要转换为html的东西.

1)我应该在哪里创建一个将字符串转换为HTML的方法?
2)如何阻止RoR转义RDiscount.to_html返回的HTML?

ruby-on-rails rdiscount ruby-on-rails-3

5
推荐指数
1
解决办法
1240
查看次数

将 shared_ptr&lt;StructA&gt; 移动到 shared_ptr&lt;variant&lt;StructA, StructB&gt;&gt;

我试图避免为一组普通的旧数据结构使用相当复杂的继承链,但我需要将它们全部存储在一个向量中,并与调用者共享所有权。

Struct A {};
Struct B {};

using TInstruction = std::variant<A, B>;

struct holder {
  std::vector<std::shared_ptr<TInstruction>> items;
};

static holder h;

// Every individual TInstruction gets its own add function, for validation purposes
void add(std::shared_ptr<A> a) {
  // Somehow add this to h, while still sharing ownership with the caller
  // h.emplace_back(???)
}


int main() {
  holder h;

  auto a = std::make_unique<A>();
  auto b = std::make_unique<B>();

  add(a);
  // add(b) // not implemented
}
Run Code Online (Sandbox Code Playgroud)

通过对原始想法进行以下更改,我取得了中等(但非常糟糕)的成功:

  1. 在变体中使用共享指针,即 using TInstruction = std::variant<std::shared_ptr<A>, std::shared_ptr<B>> …

c++ c++14 c++17

5
推荐指数
1
解决办法
250
查看次数

controller.js.coffee中的函数

我在使用CoffeeScript创建函数时遇到了一些麻烦,我想我错过了一些东西.对于我的用户控制器,我想为注册表单创建客户端验证.我想我已经错过了这一切如何运作的基本原则.

<%= form_for @user, :html => {:onsubmit => "return validate_signup_form();"} do |f| %>
Run Code Online (Sandbox Code Playgroud)

CoffeeScript(assets/users.js.coffee):

validate_signup_form = () ->
    alert "Hi"
    return false
Run Code Online (Sandbox Code Playgroud)

预期产量:

var validate_signup_form;
validate_signup_form = function() {
  alert("Hi");
  return false;
};
validate_signup_form();
Run Code Online (Sandbox Code Playgroud)

实际输出:

(function() {
  var validate_signup_form;
  validate_signup_form = function() {
    alert("Hi");
    return false;
  };
}).call(this);
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails coffeescript ruby-on-rails-3.1

4
推荐指数
1
解决办法
2924
查看次数