假设我有一个User模型,其facebook_uid字段对应于用户的facebook id.
我想允许用户取消他的Facebook帐户的链接.这样做,我需要将此属性设置为nil.
我目前看到了两种方法
# app/controllers/users_controller.rb
def unlink_facebook_account
@user = User.find params[:id]
# Authorization checks go here
@user.facebook_uid = nil
@user.save
# Redirection go here
end
# config/routes.rb
ressources :users do
get 'unlink_fb', :on => :member, :as => unlink_fb
end
# in a view
= link_to "Unlink your facebook account", unlink_fb_path(@user)
Run Code Online (Sandbox Code Playgroud)
# app/views/user/_unlink_fb_form.html.haml
= form_for @user, :method => "post" do |f|
= f.hidden_field :facebook_uid, :value => nil
= f.submit "Unlink Facebook account"
Run Code Online (Sandbox Code Playgroud)
我不是两种方式的忠实粉丝.
在第一个中,我必须为更新控制器已经可以执行的操作添加新操作.
在第二个中,我无法在不自定义更新操作的情况下将facebook_uid设置为nil,并且在没有添加一些javascript的情况下我没有链接而不是按钮.
不过,对于这种情况,您会推荐哪种最佳和最优雅的解决方案?我错过了第三种选择吗?
request.url返回给我:http:// localhost:3000/page?foo = bar.
有没有我可以调用的方法来获取http:// localhost:3000/page,还是我必须解析字符串以去除get参数?
上下文:使用yeoman构建的单页主干应用程序
我想要一种方法让一些应用程序参数取决于我当前的环境(dev vs production).
现在我使用两个单独的配置文件,在部署grunt:usemin任务时,我将dev one切换到prod one:
// index.html
<!-- build:js scripts/config.prod.js -->
<script src="scripts/config.dev.js"></script>
<!-- endbuild -->
// config.dev.js
window.config = {
api_host: 'localhost:9393',
api_key: 'dev_api_key'
}
// config.prod.js
window.config = {
api_host = 'api.host.tld',
api_key = 'prod_api_key'
}
Run Code Online (Sandbox Code Playgroud)
这个解决方案有效,但很臭,不允许任何其他环境,而不是生产和开发.我有什么选择?
以下是我的剧本中负责从源代码下载和构建ruby的部分:
vars:
ruby_version: '2.0.0-p247'
ruby_url: 'ftp://ftp.ruby-lang.org//pub/ruby/2.0/ruby-{{ ruby_version }}.tar.gz'
tasks:
- name: Ensure ruby dependencies are installed
apt: pkg=$item state=installed update-cache=yes
sudo: yes
with_items:
- build-essential
- git-core
- libreadline6-dev
- libyaml-dev
- libsqlite3-dev
- sqlite3
- libgdbm-dev
- libncurses5-dev
- libtool
- bison
- libffi-dev
- libdigest-hmac-perl
- unzip
- zlib1g
- zlib1g-dev
- name: Ensure the ruby source is downloaded
get_url: url=$ruby_url dest=/home/vagrant/ruby-{{ ruby_version }}.tar
- name: Ensure the ruby source is extracted
command: tar -zxf /home/vagrant/ruby-$ruby_version.tar creates=/home/vagrant/ruby-{{ ruby_version …
Run Code Online (Sandbox Code Playgroud) 我有这样的关系:一个用户可以拥有零只或一只狗,但狗必须属于某人。
# dog.rb
class Dog < ActiveRecord::Base
belongs_to :user
end
# user.rb
class User < ActiveRecord::Base
has_one :dog
end
Run Code Online (Sandbox Code Playgroud)
我想定义以下范围:
User.with_a_dog
User.without_a_dog
Run Code Online (Sandbox Code Playgroud)
我可以对第一种情况执行此操作,因为在 Rails 中默认连接是 INNER JOIN :
scope :with_a_dog, :joins(:dog)
Run Code Online (Sandbox Code Playgroud)
1/ 这个解决方案对于第一个范围足够好吗?
2/ 第二个你会做什么?
3/(有些相关)有更好的方法吗?:
# user.rb
def has_a_dog?
!self.dog.nil?
end
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!
我有一个在heroku上运行的elixir(混合)应用程序
我在将远程iex shell附加到此应用程序时遇到问题
该应用程序通过以下命令启动:
web: MIX_ENV=prod elixir --sname server -S mix run --no-halt
Run Code Online (Sandbox Code Playgroud)
我在本地附加shell没有问题
MIX_ENV=prod elixir --sname server -S mix run --no-halt
iex --sname console --remsh server@mru2
Run Code Online (Sandbox Code Playgroud)
但是,在heroku上尝试时,我遇到了以下问题:
heroku run "iex --sname console --remsh server@41959264-bef2-4d2e-b5de-6dcf618efa44"
Running `iex --sname console --remsh server@41959264-bef2-4d2e-b5de-6dcf618efa44` attached to terminal... up, run.4421
Erlang/OTP 17 [erts-6.4] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]
Could not contact remote node server@41959264-bef2-4d2e-b5de-6dcf618efa44, reason: :nodedown. Aborting...
Run Code Online (Sandbox Code Playgroud)
似乎启动的实例heroku run
无法连接到运行服务器的实例.我试过强制执行一个常见的cookie,但无济于事.
我错过了什么?
我有一个非常大且非常稀疏的矩阵,仅由 0 和 1 组成。然后我基本上处理(行列)对。我每行/列最多有 10k 对。
我的需求如下:
并行插入(行-列)对
快速检索整行或整列
快速查询(行列)对的存在
如果可能的话,一个 Ruby 客户端
是否有适用于此类约束的现有数据库?
如果没有,什么能让我获得最佳性能:
row(indexed) | column(indexed)
(但索引必须不断刷新)
row => columns ordered list
column => rows ordered list
(但将元素并行插入到列表中)
谢谢你的帮助!
按照安装说明,我的文件中包含以下Ecto配置config/config.exs
:
config :my_app, MyApp.Repo,
adapter: Ecto.Adapters.Postgres,
url: "postgresql://postgres@localhost/myrepo",
size: 20
Run Code Online (Sandbox Code Playgroud)
如果我的理解是正确的,那么config.exs
在编译时进行评估.
有没有办法在运行时执行此配置步骤?
这适用于将作为编译二进制文件(via exrm
)分发的应用程序.最终用户应该能够通过标志或环境变量自定义数据库URL和池大小,而不是通过编辑sys.config
我找不到托管最新版oauth gem的存储库(v 0.4.7).
我有一个pelle/oauth github存储库,它有0.4.3的主机,并且链接到所谓的最新的oauth/oauth-ruby,它已经关闭了.
我错过了什么,或者现在这个存储库是否已经离开网格?
ruby ×3
elixir ×2
activerecord ×1
ansible ×1
crud ×1
database ×1
ecto ×1
elixir-mix ×1
forms ×1
gem ×1
gruntjs ×1
heroku ×1
hidden-field ×1
javascript ×1
nosql ×1
oauth ×1
open-source ×1
repository ×1
sql ×1
url ×1
yeoman ×1