Ruby on rails RubyonRails没有模型-如果数据CRUD是由WebServicesAPI执行的
我一直在考虑用rails开发一个新的应用程序(可能没有模型?)。我的意思是;后端将使用任何其他语言编写,并提供RESTful API,Rails应用程序将使用这些API 由于后端API将负责所有数据CRUD操作,rails应用程序将无法直接访问数据库。那么rails模型在这样的体系结构中就没有用处了 我也可以直接从控制器对API进行curl调用,但我希望在胖模型的同时保持控制器的瘦 或者,可以在模型中进行API curl调用,其行为类似于对该模型中的数据库执行数据CRUD 在上述任何一种情况下,我都无法从许多rails特性或gem(比如friendly_id)中获益,这些特性或gem可以在活动记录/ORM上工作 我真的很困惑我该走哪条路?最佳实践是什么?您可以推荐什么架构?我绝对希望后端完全解耦,只提供RESTful API 提前谢谢。看一看 你最终会得到模型,但大多数只会占用一行 假设您的api服务有一个url,如:它会显示一个产品列表。在将使用此数据的rails应用程序中,创建一个继承自Ruby on rails RubyonRails没有模型-如果数据CRUD是由WebServicesAPI执行的,ruby-on-rails,ruby,model-view-controller,design-patterns,Ruby On Rails,Ruby,Model View Controller,Design Patterns,我一直在考虑用rails开发一个新的应用程序(可能没有模型?)。我的意思是;后端将使用任何其他语言编写,并提供RESTful API,Rails应用程序将使用这些API 由于后端API将负责所有数据CRUD操作,rails应用程序将无法直接访问数据库。那么rails模型在这样的体系结构中就没有用处了 我也可以直接从控制器对API进行curl调用,但我希望在胖模型的同时保持控制器的瘦 或者,可以在模型中进行API curl调用,其行为类似于对该模型中的数据库执行数据CRUD 在上述任何一种情况下,
ActiveResource
的产品
模型。首先,为activeresource设置api url
class ActiveResource::Base
self.site = "http://api.fart.com"
end
接下来,定义一个产品类
class Product < ActiveResource::Base; end
它应该击中“http://api.fart.com/products.json“把好东西还给我
显然,这是一个很快设计好的例子,但我最近将其用于类似的情况,效果非常好
///////////////
有关基本概念,请参见
///////////////
根据您在github上提出的问题和请求,我理解您现在想要做什么ActiveResource
没有where
方法-但是,find
方法有一个支持参数散列的选项参数
带有查询参数的Rails控制器
def index
@products = Product.find :all, params: { country: "Brazil", price: 500 }
end
这将影响我们在api.fart.com/products.json?country=brazi&price=500的Sinatra路线
# Assume we are using ActiveRecord/DataMapper or the like
get "/products.json" do
@products = Product.where country: params[:country], price: params[:price].to_i
json products: @products
end
看一看
你最终会得到模型,但大多数只会占用一行
假设您的api服务有一个url,如:它会显示一个产品列表。在将使用此数据的rails应用程序中,创建一个继承自ActiveResource
的产品
模型。首先,为activeresource设置api url
class ActiveResource::Base
self.site = "http://api.fart.com"
end
接下来,定义一个产品类
class Product < ActiveResource::Base; end
它应该击中“http://api.fart.com/products.json“把好东西还给我
显然,这是一个很快设计好的例子,但我最近将其用于类似的情况,效果非常好
///////////////
有关基本概念,请参见
///////////////
根据您在github上提出的问题和请求,我理解您现在想要做什么ActiveResource
没有where
方法-但是,find
方法有一个支持参数散列的选项参数
带有查询参数的Rails控制器
def index
@products = Product.find :all, params: { country: "Brazil", price: 500 }
end
这将影响我们在api.fart.com/products.json?country=brazi&price=500的Sinatra路线
# Assume we are using ActiveRecord/DataMapper or the like
get "/products.json" do
@products = Product.where country: params[:country], price: params[:price].to_i
json products: @products
end
太棒了,这正是我想要的。我唯一关心的是对slug使用友好的\u id。在这样的实现中有什么方法可以实现它吗?还假设我有一个RESTAPI url,如GET-so,在这种情况下,我的产品类会是什么样子?同样在controller中,我将如何调用这样的url?@JVK,我正在为您创建一个快速示例应用程序。过一会儿我会发到github。简言之,friendly_id似乎仅用于ActiveRecord,但可以轻松复制。@JVK请参阅底部的示例应用程序链接。我得到了slug部分。谢谢:)。但我最初的问题仍然没有得到回答。假设我有一个RESTAPI url,比如GET-so,在这种情况下,我的产品类在rails中(不是在sinatra应用程序中)会是什么样子?我还了解到,activeresource过去是rails的一部分,但由于一些问题,它现在已经从rails中删除了。那么继续使用它明智吗?太棒了,这正是我想要的。我唯一关心的是对slug使用友好的\u id。在这样的实现中有什么方法可以实现它吗?还假设我有一个RESTAPI url,如GET-so,在这种情况下,我的产品类会是什么样子?同样在controller中,我将如何调用这样的url?@JVK,我正在为您创建一个快速示例应用程序。过一会儿我会发到github。简言之,friendly_id似乎仅用于ActiveRecord,但可以轻松复制。@JVK请参阅底部的示例应用程序链接。我得到了slug部分。谢谢:)。但我最初的问题仍然没有得到回答。假设我有一个RESTAPI url,比如GET-so,在这种情况下,我的产品类在rails中(不是在sinatra应用程序中)会是什么样子?我还了解到,activeresource过去是rails的一部分,但由于一些问题,它现在已经从rails中删除了。那么继续使用它是否明智呢?